Many modern complex systems including aircraft, spacecraft, automobiles, medical devices and the like involve a central computer system or other processing element that communicates with a number of subsystems to create a complete system. This central processing element may include one or more processors and/or cores that execute computer programs designed to control the complex system.
To develop these complex systems, test facilities are created that allow for computer programs in the central computer system to be developed and tested with real and/or simulated subsystems attached to the test facilities. Since these test facilities are often expensive, they are typically a limited resource on a development program. To create more test capabilities, virtual representations of the test facilities are often created.
One way to create a virtual test facility is to create simulations of appropriate devices and communication interfaces and attach these simulations to computer programs for control of the complex system that run inside a virtualization platform, which may be provided by a suitable virtual machine configured to run on top of a host hardware platform. It is often desirable to run computer programs on an emulated processor inside the virtual platform. The emulated processor and virtualization layer allows for great control of the execution of the computer programs, and it also provides greater visibility into the operation of the computer programs.
After a complex system is developed, it is often necessary or highly desirable to create a trainer to train the users of the complex system on its operation. It is highly desirable to have a trainer that operates in a fashion as close to, if not identical, to the operation of the actual system. One method to create a trainer is to run computer programs inside a virtualization platform on a host hardware platform. It is often desirable to run the computer programs on an emulated processor inside the virtual platform. The emulated processor and virtualization layer provides a high fidelity representation of the actual system and allows for great control of the execution of the computer programs to allow for the creation of certain training scenarios that would not be possible on the actual target hardware platform used in the complex system.
The creation of a virtualization platform involves the creation of a pure software representation of the target hardware platform found on the actual complex system. The objective of the virtualization is to make the computer programs running inside the virtual platform to execute in a similar fashion as the real target hardware. To accomplish this goal, the hardware found in the memory map of a system that is accessed by the computer programs running on the virtual platform may be virtualized. This virtualization of the hardware varies in complexity, but if done correctly when computer programs read/write to memory locations and registers, it should see the behavior it expects in the system.
Another aspect of creating a virtualization platform is the correct handling of interrupts in a system. The interrupts are used to signal events in a system, such as input/output transmission and/or reception, timer expiration and the like. The design of the interrupts varies between systems. Interrupt designs often use interrupt lines, vectors and controllers to attach the interrupts to devices in a system. All of the functionality of the interrupt design may be virtualized to achieve an effective virtual platform.
Emulation of a processor is often a desirable feature in a virtualization platform. The processor emulation allows for the exact same binaries of the computer programs that execute on the hardware to execute in the virtualization platform. It is also possible to use the exact same software development environment and operating systems if processor emulation is available on the virtualization platform.
Emulation of a processor is slower than native processor execution. It is often desirable in test facilities and trainers that use virtualization platforms to run at least as fast as the target hardware platform being virtualized, and it is often desirable to run accelerated (faster than the target hardware platform). Since the host hardware platform that runs the virtualization platform is typically much faster than the target hardware platform, the necessary performance can sometimes be achieved without additional work. But as the performance gap closes between the target and host hardware platforms, it may be difficult if not impossible to achieve the desired emulation performance using traditional techniques.